# -*- coding:utf-8 -*-
"""
@Author : 审心
@Time : 2023/5/17 14:03
商品相关工具类
"""
import time

from DrissionPage import WebPage

from autoTask.taobao.sycm.utils.close_Ad import tb_slider
from common.utils import ObjUtil
from common.logger.log import log_
from common.utils.web_page_util import MockTap, Tap


def get_platform_by_link(link: str):
    """
    根据商品链接获取商品平台
    :param link: 商品链接
    :return: 0 淘宝 1 天猫
    """
    if link.startswith("https://item.taobao.com"):
        return 0
    elif link.startswith("https://detail.tmall.com"):
        return 1
    else:
        raise RuntimeError(f"暂不支持的辨别的商品链接 : {str}")


def dw_master_img(p: WebPage, link: str, file_dir: str, file_name: str, timeout: int = 30) -> str:
    """
    下载商品主图
    :param p: 网页对象
    :param link: 商品详情页链接
    :param file_dir: 图片保存文件及
    :param file_name: 图片文件名称
    :param timeout: 下载超时时间
    :return: 图像文件路径
    """
    tab_id = p.new_tab(url=link)
    tab = p.get_tab(tab_id)
    tab.wait.load_start(timeout=10)
    # 检测滑块
    if tb_slider(tab, timeout=5):
        tab.wait.load_start(timeout=15)
    # 根据不同平台设定选择器
    pt = get_platform_by_link(tab.url)
    log_.info(f"获取主图商品详情页链接 : {tab.url}")
    img_list, master_img = None, None
    if pt == 0:
        img_list = "@class:tb-pic tb-s50"
        master_img = "#J_Tb-Viewer-Original-0"
    elif pt == 1:
        img_list = "t:li@@class:PicGallery--thumbnail"
        master_img = "t:img@@class:PicGallery--mainPic"
    if ObjUtil.has_none(img_list, master_img):
        raise RuntimeError("元素定位符不能为空")
    Tap(tab.eles(img_list)[1], "打开商品主图", after_delay=3)()
    # tab.eles(img_list)[1].hover()
    time.sleep(2)
    img = tab(master_img)
    log_.info(f"图片元素 : {img}")
    img.save(file_dir, file_name, timeout=timeout)
    p.close_tabs(tab_id)
    return file_dir + "/" + file_name
